import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  //全局变量配置 token、userinfo
  state: {
    token: localStorage.getItem("token"),  //同理token也可以？？可以问一下  不行   token为空可以请求
    // token: '',
    //初始化的时候直接从sessionStorage中获取
    // userinfo: JSON.parse(sessionStorage.getItem("userinfo"))
    userinfo: {},

    tabbar_active: 0,

  },
  //通过mutations 赋值、修改。。。
  mutations: {

    /*SET_TABBAR_ACTIVE:(state,activate) => {
      state.tabbar_active = activate
    },*/

    // 类似set方法
    //方法名:（参数）
    SET_TOKEN: (state, token) => {
      state.token = token
      //存放到浏览器的localStorage  即使关闭也存在  （jwt来验证时间）
      //参考链接：https://blog.csdn.net/weixin_41997724/article/details/84560612
      localStorage.setItem("token", token)
    }, //同理存放UserInfo
    SET_USERINFO: (state, userinfo) => {
      state.userinfo = userinfo
      //也可以放在SessionStorage（一次会话 关闭就没了）   只能村字符串
      //参考连接：https://www.cnblogs.com/pengc/p/8714475.html
      //sessionStorage保存的是字符串  不是json对象   所以用getter取到
      sessionStorage.setItem("userinfo", JSON.stringify(userinfo))
    },
    //将信息（token、userinfo）设置为空
    //登出/异常的时候有用到
    REMOVE_INFO: (state) => {
      state.token = ''
      state.userinfo = ''
      localStorage.setItem("token", '')
      sessionStorage.setItem("userinfo", JSON.stringify(''))
    }
  },


  getters: {
    //同理 get 方法  获取user信息
    getUser: state => {
      return state.userinfo
    },


    //同理 get 方法  获取user信息
    geToken: state => {
      return state.token
    }

  },
  actions: {},
  modules: {}
})
